package com.qb.hotelTV.network;

import com.qb.hotelTV.Model.ApkModel;
import com.qb.hotelTV.Model.BaseResponseModel;
import com.qb.hotelTV.Model.HotelMessageModel;
import com.qb.hotelTV.Model.RoomMessageModel;
import com.qb.hotelTV.Model.TvTextModel;
import com.qb.hotelTV.Model.VideoModel;

import java.util.List;

import io.reactivex.Single;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Query;

/**
 * API服务接口 - 使用Retrofit和RxJava优化
 * 提供所有网络请求接口定义
 */
public interface ApiService {
    
    /**
     * 获取房间信息
     */
    @GET("/api/room/message")
    Single<BaseResponseModel<RoomMessageModel>> getRoomMessage(
            @Query("number") String roomNumber,
            @Header("tenant-id") String tenantId,
            @Header("Authorization") String authorization
    );
    
    /**
     * 获取酒店信息
     */
    @GET("/api/hotel/message")
    Single<BaseResponseModel<HotelMessageModel>> getHotelMessage(
            @Header("tenant-id") String tenantId,
            @Header("Authorization") String authorization
    );
    
    /**
     * 获取TV频道列表
     */
    @GET("/api/tv/channels")
    Single<BaseResponseModel<List<VideoModel>>> getTvChannels(
            @Header("tenant-id") String tenantId,
            @Header("Authorization") String authorization
    );
    
    /**
     * 获取应用列表
     */
    @GET("/api/apk/list")
    Single<BaseResponseModel<List<ApkModel>>> getApkList(
            @Header("tenant-id") String tenantId,
            @Header("Authorization") String authorization
    );
    
    /**
     * 获取TV文本信息
     */
    @GET("/api/tv/text")
    Single<BaseResponseModel<TvTextModel>> getTvText(
            @Header("tenant-id") String tenantId,
            @Header("Authorization") String authorization
    );
    
    /**
     * 获取天气信息
     */
    @GET("/api/weather")
    Single<String> getWeather(
            @Query("location") String location
    );
    
    /**
     * 获取地理位置信息
     */
    @GET("/api/geo")
    Single<String> getGeoLocation(
            @Query("lat") double latitude,
            @Query("lng") double longitude
    );
} 